package com.factory.code.service;

import com.factory.code.controller.param.TemplatePageParam;
import com.factory.code.controller.vo.PageVO;
import com.factory.code.controller.vo.R;
import com.factory.code.repository.ent.TemplateCustomENT;
import com.factory.code.repository.ent.TemplateENT;
import com.factory.code.service.model.CodeTableModel;
import com.factory.code.service.model.CodeVelocityModel;
import com.factory.code.service.model.NameAndValueModel;
import org.apache.velocity.VelocityContext;

import java.util.List;

public interface TemplateCustomService {
    List<TemplateCustomENT> listByProjectId(Integer projectId);

    TemplateCustomENT getById(Integer id);

    R update(TemplateCustomENT templateConfig);

    R add(TemplateCustomENT templateConfig);

    R delete(TemplateCustomENT templateConfig);

    /**
     * 自定义 模板 可放代码块
     *
     * @param projectId
     * @return
     */
    CodeVelocityModel getCustomTemplate(Integer projectId);

    /**
     * 设置自定义模板
     *
     * @param projectId
     * @param context
     * @return
     */
    VelocityContext setCustomTemplateContent(Integer projectId, VelocityContext context, CodeTableModel tableModel);

    PageVO<TemplateCustomENT> getPage(TemplatePageParam param);


    R<List<NameAndValueModel>> getJavaMethodList();
}
